/*
 * Copyright (c) 2022 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { BaseDescription } from './BaseDescription.js';
/**
 * A {@link Description} that is stored as a string.
 */
export class StringDescription extends BaseDescription {
    constructor() {
        super();
        this.value = '';
    }
    /**
     * Return the description of a {@link SelfDescribing} object as a String.
     *
     * @param selfDescribing
     *    The object to be described.
     * @return
     *   The description of the object.
     */
    static convertToString(selfDescribing) {
        return new StringDescription().appendDescriptionOf(selfDescribing).toString();
    }
    /**
     * Alias for {@link #toString(SelfDescribing)}.
     *
     * @param selfDescribing
     *    The object to be described.
     * @return
     *   The description of the object.
     */
    static asString(selfDescribing) {
        return this.convertToString(selfDescribing);
    }
    append(str) {
        this.value += str;
    }
    /**
     * Returns the description as a string.
     */
    toString() {
        return this.value;
    }
}
